package com.abel.bigwater.data.sanchuan

import io.netty.buffer.ByteBuf

abstract class SanchuanData(_dataLen: Int?) {

    var dataLen: Int? = _dataLen

    /**
     * 计算数据长度，针对解析和打包
     */
    abstract fun computeDataLen(): Int

    /**
     * 从当前位置写入打包字节流
     */
    abstract fun fillBuffer(buf: ByteBuf)

    /**
     * 解析字节流，从buf当前位置开始，并且消费其中的字节。
     */
    abstract fun <T : SanchuanData> parseBuffer(buf: ByteBuf): T?

}
